import java.util.*;

class Libro {
      private static HashMap listaLibros = new HashMap();
      private static int contador = 0;
      private int codLibro;
      private String titulo;
      private String autor;
      private String editorial;
      private Socio prestado;


      Libro (String tituloLibro, String autorLibro, String editorialLibro){
              contador++;
              codLibro = contador;
              titulo = tituloLibro;
              autor = autorLibro;
              editorial = editorialLibro;
              prestado = null;
              listaLibros.put(new Integer(codLibro),this);
      }
      
      public static Libro recuperarLibro(int codLibro){
              Integer clave = new Integer (codLibro);
              if (listaLibros.containsKey(clave)){
                  return((Libro)listaLibros.get(clave));
              }
              else 
                  return(null);
      }

      public static boolean bajaLibro(int codLibro){
              Libro l = Libro.recuperarLibro(codLibro);
              Integer clave = new Integer(codLibro);
              if (listaLibros.containsKey(clave)){
                  if (l.prestado == null) {
                   listaLibros.remove(clave);
                   return (true);
                  }
                  else{
	           return false;
                  }
              }
              else 
                  return (false);
     }

     public boolean prestar (Socio socio){
             if (prestado != null) {
                return(false);
             }
             else{
                prestado = socio;
                return(true);

             }
     }

     public boolean devolver (int codLibro) {
             Integer clave = new Integer (codLibro);
             if (listaLibros.containsKey(clave)){
             Socio socio = prestado;
               if (socio != null) {
               socio.DevolverPrestado(this);
               prestado = null;
               return (true);
               }
               else 
               return (false);
             }
             else
                 return (false); 
     }
}
